<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>기본 내장객체 - request</title>
</head>
<body>
<h1>JSP 기본 내장객체 implicit object</h1>
<p>JSP 프로그래밍시 프로그래머가 특별히 
선언하지 않아도 바로 사용할 수 있도록 미리 
정의된 객체를 의미함</p>
<p>JSP 페이지 실행시 웹 컨테이너가 자동으로 생성해 줌</p>
<p>실제 선언되는 곳은 JSP 페이지에 대한 
서블릿 소스의 _jspService 메서드 내임</p>

<h1>JSP 기본 내장 객체</h1>
<p>JSP 기본 객체는 상속되는 원래 클래스 이름을
	줄여서 표현한다는 것을 유의할 것!</p>
<p>request(HttpServletRequest) :
	사용자의 요청처리 및 html 폼 요소 처리</p>
<p>response(HttpServletResponse) :
	처리결과를 사용자에게 응답형태로 돌려줌</p>
<p>pageContext(PageContext) :
	웹 응용프로그램에 관련된 정보 처리</p>
<p>session(HttpSession) :
	사용자 별 접속상태 처리</p>
<p>application(SevletContext) :
	웹 컨테이너의 웹 응용프로그램 처리와 관련된 
	정보를 참조하기 위해 사용</p>
<p>config(ServletConfig) : 
	JSP 페이지의 초기화 작업을 처리</p>
<p>out(JspWriter) : JSP 실행결과를 출력하기
	위해 output 처리 담당</p>
<p>exception(Throwable) : 예외 처리 담당 </p>
<p>page(HttpJspPage) : 현재 실행중인
	JSP 페이지의 정보를 참조</p>

<h1>기본 내장객체 - request</h1>
<p>JSP/Servlet 에서 가장 많이 사용하는 객체로
   클라이언트의 요청을 처리하는데 사용함</p>
<p> getRemoteAddr : 
		<%=request.getRemoteAddr() %></p>
<p> getMethod : 
		<%=request.getMethod() %></p>
<p> getRequestURI : 
		<%=request.getRequestURI() %></p>		
<p> getContextPath : 
		<%=request.getContextPath() %></p>
<p> getQueryString : 
		<%=request.getQueryString() %></p>
<p> getHeader : 
	<%=request.getHeader("User-Agent") %></p>

<hr />
<h1>HTML 폼 요소에 대한 요청 처리</h1>
<p>HTML 폼에 입력된 정보는 웹브라우저를 통해
서버로 매개변수 형태(이름=값)로 전송됨</p>
<p>매개변수로 전달된	정보를 서버에서 처리하려면
먼저 request 객체를 이용해서 매개변수를 읽어와야 함</p>
 
<p>getParameter(이름) : 
	요청 매개변수의 값을 읽어옴</p>
<p>getParameterValues(이름) : 
	요청 매개변수의 값을 배열로 읽어옴</p>
<p>getParameterNames() : 
	요청 매개변수의 이름을 열거형으로 읽어옴</p>
<p>getParameterMap() :
	요청 매개변수의 이름/값을 맵으로 읽어옴</p>
<p>setCharacterEncoding(인코딩) : 
	한글처리를 위해서 요청 매개변수 값을 
	지정한 인코딩으로 설정</p>

<p>getParameterNames(), 
getParameterMap() 을 이용하면
반복적인 코드 작성없이 효율적으로
요청 매개변수를 처리할 수 있음 (추천!)</p>

<form method="post">
  이름 : <input type="text" name="name" /><br />
  비밀번호 : <input type="password" name="pwd" /><br />
  
  <input type="checkbox" 
	name="hobby" value="등산" /> 등산
  <input type="checkbox" 
	name="hobby" value="독서" /> 독서
  <input type="checkbox" 
	name="hobby" value="게임" /> 게임	
 
  <input type="submit" value="입력완료" />	
</form>
<%
	request.setCharacterEncoding("UTF-8");
	String name = 
		request.getParameter("name");
	String pwd = 
		request.getParameter("pwd");	
	//String hobby = 
	//	request.getParameter("hobby");
	String[] hobby = 
	  request.getParameterValues("hobby");
	out.print( name );
	out.print( pwd );
	//out.print( hobby );
	if ( hobby != null )
		for(int i = 0; i < hobby.length; ++i)
			out.print( hobby[i] );
	
%>

</body>
</html>



